////#include<iostream>
////#include<memory>
////using namespace std;
////struct node 
////{
////	int val;
////	shared_ptr<node> _next;
////	weak_ptr<node> _prev;
////	node(const int& x)
////		:val(x)
////		,_next(nullptr)
////		,_prev(_next)
////	{}
////	~node()
////	{
////		cout << "delete" << endl;
////	}
////};
////int main()
////{
////	shared_ptr<node> head(new node(1));
////	head->_next = shared_ptr<node>(new node(2));
////	head->_next->_prev = head;
////	return 0;
////}
//class func
//{
//	int operator()(const int& k)
//	{
//		return k;
//	}
//};
//template <class T,class K=func>
//class A
//{
//	A<T> s;
//private:
//	int a;
//};
//int main()
//{
//	A<int> a;
//	return 0;
//}